package com.dlyk.config.holder;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

/**
 * 应用上下文持有器（实现ApplicationContextAware接口）
 */
// 注意：交给Spring容器管理
@Component
public class ApplicationContextHolder implements ApplicationContextAware {

    // 定义一个静态的ApplicationContext类型的变量
    private static ApplicationContext applicationContext;

    // 实现ApplicationContextAware接口的方法
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {

        // 这个类交给Spring容器管理后，程序启动的时候会自动调用该方法
        // 在这里给applicationContext变量赋值
        ApplicationContextHolder.applicationContext = applicationContext;
    }

    // 定义一个静态方法，可以通过该方法获取ApplicationContext（应用上下文）
    public static ApplicationContext getApplicationContext() {
        return ApplicationContextHolder.applicationContext;
    }

}

